export { }
// 函数类型
// 1.函数声明方式声明 一个函数：
function func1(a: number, b: number): string {
    return 'func1'
}

func1(12, 2) //参数的类型和数量就固定了。数量少了，多了都不行。

// 可选参数：出现在参数列表的最后
function func2(a: number, b?: number): string {
    return 'func1'
}

func2(1)

// 参数默认值：出现在参数列表的最后

function func3(a: number, b: number = 123): string {
    return 'func1'
}

func3(1)

// 任意个参数：使用ES6的数组解构
function func4(a: number, b: number = 123, ...rest: number[]): string {
    console.log(rest);//34, 45
    return 'func1'
}

func4(1, 23, 34, 45)

// 2.函数表达式：
// 函数是放到变量中的，这个变量应该是也有类型的，
// const func5 = function (a: number, b: number): string {
//     return 'func1'
// }

// func5(1,2)

//所以变量就是一个函数类型：一般在定义接口时非常有效。
// vscode自已也可以通过函数表达式，推断出变量的类型。
const func5: (a: number, b: number)=>string = function (a: number, b: number): string {
    return 'func1'
}
func5(1,2)